#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>


//-------------------------------------------------






//-------------------------------------------------

////     《 多进程测试 》
//
//void RunChild()
//{
//    while(1)
//    {
//      printf("I am Child, pid:%d, ppid:%d\n", getpid(), getppid());
//    sleep(1);             //子进程 每隔1S执行1次 
//    }
//}
//
//
//int main()
//{
//  const int num = 5;
//
//  int i = 0;
//  for(i = 0; i < num; i++)
//  {
//    pid_t id = fork();  
//    if(id == 0)
//    {
//      RunChild();
//    }
//    sleep(1);         
//  }
//
//    while(1)
//    {
//    sleep(1);         
//      printf("I am process, pid:%d, ppid:%d\n\n", getpid(), getppid());
//    }
//
//    return 0;
//}


//-------------------------------------------------


//《子父进程》

int main()
{
  pid_t id = getpid();
  pid_t parent = getppid();

  while(1)
  {
    printf("我的进程 pid:%d,  父进程 ppid:%d\n", id, parent);
    sleep(1);
  }

  return 0;
}

//--------------------------------------------------

//int main()
//{
//  printf("process is running, only me!, pid:%d, ppid:%d\n", getpid(), getppid());
//  sleep(3);
//
//  pid_t id = fork();      //获取 fork 返回值 (创建成功返回子进程pid给父进程，0给子进程，失败返回-1 给父)
//  if(id == -1) return 1;  //如果创建子进程失败了
//  else if(id == 0)
//  {
//    // child
//    while(1)
//    {
//      printf("id:%d, I am child process, pid:%d, ppid:%d\n", id, getpid(), getppid());
//    sleep(1);             //子进程 每隔1S执行1次 
//    }
//  }
//  else 
//  {
//    // parent
//    while(1)
//    {
//      printf("id:%d, I am child parent, pid:%d, ppid:%d\n", id, getpid(), getppid());
//    sleep(2);             //父进程 每隔2S执行1次 
//    }
//
//  }
//
//  //fork();   //创建子进程
//  //printf("hello world, pid:%d, ppid:%d\n", getpid(), getppid()); 
//  //sleep(5);
//
//  return 0;
//}

//-------------------------------------------------








